package auxiliar;

import estructuraGrafo.Nodo;


/**
 * Clase NodoMont: Contiene un nodo y una clave de ordenacion asociada. NodoMont se utiliza para insertarlo en un monticulo
 * 
 * @author  Grupo N11
 * @author  Prinsich Bernz, Emilio J. A.
 * @author 	Solia, Guillermo D.
 * @version  1.0
 */
public class NodoMont {
	/**Variable para almacenar el nodo insertado*/
	Nodo valor;
	/**Variable para almacenar la clave de ordenacion asociada a un nodo*/
	double clave;
	/**Variable para almacenar el indice en el monticulo al cuando pertenecera*/
	int indice;
	
	/**Constructor por default de la clase
	 * 
	 */
	NodoMont(){}
	
	/**Constructor de la clase
	 * 
	 * @param unNodo
	 * 				Nodo que contendra
	 * @param unaClave
	 *				Clase de ordenacion asociada al Nodo
	 */
	public NodoMont(Nodo unNodo, double unaClave){
		valor = unNodo;
		clave = unaClave;
	}
	
	/**Obtiene el Nodo
	 * 
	 * @return
	 * 		Retorna el nodo que contiene el llamador
	 */
	public Nodo getNodo(){ return valor; }
	
	/**Obtiene la clave asociada al nodo
	 * 
	 * @return
	 * 		Retorna la clave que contiene el llamador
	 */
	public double getClave() { return clave; }
	
	/**Obtiene el indice
	 * 
	 * @return
	 * 		Retorna indice que contiene el llamador
	 */
	public int getIndice() { return indice; }
	
	/**Actualiza el nodo del NodoMont que llama
	 * 
	 * @param unNodo
	 * 				Valor que remplaza al antiguo nodo
	 */
	public void setNodo(Nodo unNodo) {valor = unNodo; }
	
	/**Actualiza la clave del NodoMont que llama
	 * 
	 * @param unaClave
	 * 				Valor que remplaza la antigua clave
	 */
	public void setClave(double unaClave) {clave = unaClave; }
	
	/**Actualiza el indice del NodoMont que llama
	 * 
	 * @param unIndice
	 * 				Valor que remplaza al antiguo indice
	 */
	public void setIndice(int unIndice) { indice = unIndice; }
	
	/**Verifica si el llamador tiene una clave mayor que a
	 * 
	 * @param a
	 * 			Clave que se compara con la clave del llamador
	 * @return
	 * 		true si la clave del llamador es mayor que a
	 */
	public boolean mayorQue(NodoMont a){ return (clave > a.getClave());	}
	
	/**Verifica si el llamador tiene una clave menor que a
	 * 
	 * @param a
	 * 			Clave que se compara con la clave del llamador
	 * @return
	 * 		true si la clave del llamador es menor que a
	 */
	public boolean menorQue(NodoMont a){ return (clave < a.getClave());	}

}
	


